import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import { i18n } from './i18n' // 多语言
import 'normalize.css/normalize.css' // 初始化样式
import 'lib-flexible' // 移动端适配
import './assets/css/init.css' // 初始化样式
import './theme/green/index.less' // 主题样式
import './env' // 环境变量设置,也可以在vue-cli自定义的.env.*文件配置
import './permission' // 全局路由守卫
import webSocket from './webSocket/index' // ws 全局挂载
import './globalEl' // 自动注册非项目全局组件
import './utils/eruda' // 开发环境,调试工具
import './components/project' // 自动注册全局项目组件
// 全局引入vant ui
import Vant from 'vant'
import 'vant/lib/index.css' // ws
import './mock' // mock 请求
import './theme/index.less' // 主题文件
import directives from './directives'
import filters from './filters' // 自定义指令集
Vue.use(directives) // 自定义指令集
Vue.use(filters) // 自定义过滤器
// eslint-disable-next-line new-cap
console.log(webSocket, 111)
Vue.prototype.$ws = webSocket.getInstance({
  url: 'ws://47.242.25.96:10000/websocket/quote?_=1607675853653&_s=d1e829d321b235cbc31a0539cd5a986d',
  openHookFn: () => {
    console.log('ws开启钩子')
  },
  messageHookFn: () => {
    console.log('ws接受钩子')
  },
  closeHookFn: () => {
    console.log('ws关闭钩子')
  },
  errorHookFn: () => {
    console.log('ws错误钩子')
  }
}) // 全局自定义组件注册
Vue.config.productionTip = false

Vue.use(Vant)

// 实例化
new Vue({
  router,
  store,
  i18n,
  data() {
    return {
      rootEventHub: new Vue() // 全局发布订阅模式   this.$root.rootEventHub.$on()
    }
  },
  render: h => {
    return h(App)
  }
}).$mount('#app')
